﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SeguroSoft.Models;

namespace SeguroSoft.Tests.Fakes
{
    class FakeRepositorioSeguro:IRepositorioSeguro
    {
        public List<Seguro> listaSeguro;

        public FakeRepositorioSeguro(List<Seguro> lista)
        {
            listaSeguro = lista;
        }

        public IQueryable<Seguro> EncontrarSegurosPorAño(int año)
        {
            return (from seguro in listaSeguro
                    where seguro.Año == año
                    select seguro).AsQueryable();
        }

        public IQueryable<Seguro> EncontrarSegurosPorDeducible(int opcion, int deducible)
        {
            if (opcion == 1)
            {
                return (from seguro in listaSeguro
                       where seguro.Deducible > deducible
                       select seguro).AsQueryable();

            }

            if (opcion == 2)
            {
                return (from seguro in listaSeguro
                        where seguro.Deducible < deducible
                        select seguro).AsQueryable();

            }

            else
            {
                return (from seguro in listaSeguro
                        where seguro.Deducible == deducible
                        select seguro).AsQueryable();
            }
        }

        public IQueryable<Seguro> EncontrarSegurosPorMarca(string marca)
        {
            return (from seguro in listaSeguro
                    where seguro.Marca.Equals(marca)
                    select seguro).AsQueryable();
        }

        public IQueryable<Seguro> EncontrarSegurosPorModelo(string modelo)
        {
            return (from seguro in listaSeguro
                    where seguro.Modelo.Equals(modelo)
                    select seguro).AsQueryable();
        }

        public IQueryable<Seguro> EncontrarSegurosPorPrima(int opcion, int prima)
        {
            if (opcion == 1)
            {
                return (from seguro in listaSeguro
                        where seguro.Prima > prima
                        select seguro).AsQueryable();

            }

            if (opcion == 2)
            {
                return (from seguro in listaSeguro
                        where seguro.Prima < prima
                        select seguro).AsQueryable();

            }

            else
            {
                return (from seguro in listaSeguro
                        where seguro.Prima == prima
                        select seguro).AsQueryable();
            }
        }

        public IQueryable<Seguro> EncontrarTodosLosSeguros()
        {
            return listaSeguro.AsQueryable();
        }

        public void Guardar()
        {
            
        }

        public Seguro ObtenerSeguro(int id)
        {
            return (from seguro in listaSeguro
                    where seguro.IDSeguros == id
                    select seguro).ElementAt(0);
        }
    }
}
